/*
 * @Description: file content
 * @Author: ZeT1an
 * @Date: 2022-01-05 08:40:51
 * @LastEditors: ZeT1an
 * @LastEditTime: 2022-01-05 08:59:14
 * @LastEditContent: 
 */
/**
 * JS中函数作为第一公民的2个特征
 * 1.JS中的函数使用非常灵活
 * 2.在JS中，函数可以作为另外一个函数的参数，也可以作为另外一个函数的返回值来使用。
 */

/**
 * 什么是高阶函数
 * 一个函数将另一个函数作为参数，或者返回一个函数称为高阶函数
 */

/**
 * 函数（Function）和方法的区别
 * 1.方法是使用对象调用的函数。
 */

/**
 * JS数组常用的6个高阶函数
 * filter, map, reduce, find, findIndex, forEach
 */

/**
 * 组成闭包的2部分：函数+可以访问的自由变量
 */

/**
 * 闭包定义的3点总结
 * 1.当一个普通函数访问外层作用域的自由变量时，称为闭包
 * 2.广义上来说，JS中每个函数都是一个闭包
 * 3.狭义上来说，访问了外层作用域的函数才算是闭包
 */

/**
 * 什么是闭包的内存泄漏：
 * 当函数依赖的上层作用域变量不需要在被使用，但不能被释放的情况称为闭包的内存泄漏。
 */

/**
 * 怎么解决闭包的内存泄漏
 * 当闭包的函数不再使用时，置为null，这样它依赖的上层作用域AO对象将不可达，GO在下一次检测时它们就会被释放
 */

/**
 * 理解闭包的内存图
 */

/**
 * V8引擎的实现中，一个整数占据4个字节
 */
